﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;

using Oracle.DataAccess;
using System.Data.OracleClient;
using EntitiesLayer.Entities;
using System.Data;

namespace DataLayer.DAO
{
    public class QuejaReclamoDAO
    {

        #region "Procedures and Methods Oracle10g"

        private Connection.Connection cn;
        private OracleConnection objCn;
        public QuejaReclamoDAO()
        {
            cn = new Connection.Connection();
            objCn = cn.Conecta();

            cn = new Connection.Connection();
            objCn = cn.Conecta();

        }

        #region "Get Data"

        public List<QuejaReclamo> bucarReclamo(string fechaDesde, string fechaHasta, string codigo)
        {
            List<QuejaReclamo> list = new List<QuejaReclamo>();

            using (OracleCommand cmd = new OracleCommand("BUSCARRECLAMOFECHA", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter refParameter = new OracleParameter();
                refParameter.ParameterName = "RECORDSET";
                refParameter.OracleType = OracleType.Cursor;
                refParameter.Direction = ParameterDirection.Output;

                OracleParameter fechadesdeParameter = new OracleParameter();
                fechadesdeParameter.ParameterName = "R_fechaDesde";
                fechadesdeParameter.OracleType = OracleType.VarChar;
                fechadesdeParameter.Size = 20;
                fechadesdeParameter.Direction = ParameterDirection.Input;
                fechadesdeParameter.Value = fechaDesde;

                OracleParameter fechahastaParameter = new OracleParameter();
                fechahastaParameter.ParameterName = "R_fechaHasta";
                fechahastaParameter.OracleType = OracleType.VarChar;
                fechahastaParameter.Size = 20;
                fechahastaParameter.Direction = ParameterDirection.Input;
                fechahastaParameter.Value = fechaHasta;

                OracleParameter CodigoParameter = new OracleParameter();
                CodigoParameter.ParameterName = "R_vpac_hhcc";
                CodigoParameter.OracleType = OracleType.VarChar;
                CodigoParameter.Size = 50;
                CodigoParameter.Direction = ParameterDirection.Input;
                CodigoParameter.Value = codigo;


                cmd.Parameters.Add(refParameter);
                cmd.Parameters.Add(fechadesdeParameter);
                cmd.Parameters.Add(fechahastaParameter);
                cmd.Parameters.Add(CodigoParameter);

                try
                {
                    objCn.Open();

                    OracleDataReader dr = cmd.ExecuteReader();

                    while (dr.Read())
                    {
                        QuejaReclamo p = new QuejaReclamo();
                        p.VREC_COD_REC = Convert.ToString(dr[0]);
                        p.DREC_FECHA_REGISTRO = Convert.ToDateTime(dr[1]);
                        p.VREC_DESC_REC = Convert.ToString(dr[2]);
                        p.VREC_APE_NOM_RECIB_POR = Convert.ToString(dr[3]);

                        list.Add(p);
                    }
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return list;
        }
        public List<QuejaReclamo> bucarQuejaReclamo(string CodReclamo, string DescripReclamo, string CodArea)
        {
            List<QuejaReclamo> list = new List<QuejaReclamo>();

            using (OracleCommand cmd = new OracleCommand("BUSCARRECLAMOCODIGO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter refParameter = new OracleParameter();
                refParameter.ParameterName = "RECORDSET";
                refParameter.OracleType = OracleType.Cursor;
                refParameter.Direction = ParameterDirection.Output;

                OracleParameter codQRParameter = new OracleParameter();
                codQRParameter.ParameterName = "R_Cod_Reclamo";
                codQRParameter.OracleType = OracleType.VarChar;
                codQRParameter.Size = 30;
                codQRParameter.Direction = ParameterDirection.Input;
                codQRParameter.Value = CodReclamo.Trim().ToLower();

                OracleParameter DesQRParameter = new OracleParameter();
                DesQRParameter.ParameterName = "R_Descripcion";
                DesQRParameter.OracleType = OracleType.VarChar;
                DesQRParameter.Size = 4000;
                DesQRParameter.Direction = ParameterDirection.Input;
                DesQRParameter.Value = DescripReclamo.Trim().ToLower();

                OracleParameter CodAreaParameter = new OracleParameter();
                CodAreaParameter.ParameterName = "R_AREA_INV";
                CodAreaParameter.OracleType = OracleType.VarChar;
                CodAreaParameter.Size = 10;
                CodAreaParameter.Direction = ParameterDirection.Input;
                CodAreaParameter.Value = CodArea;

                cmd.Parameters.Add(refParameter);
                cmd.Parameters.Add(codQRParameter);
                cmd.Parameters.Add(DesQRParameter);
                cmd.Parameters.Add(CodAreaParameter);

                try
                {
                    objCn.Open();

                    OracleDataReader dr = cmd.ExecuteReader();

                    while (dr.Read())
                    {
                        QuejaReclamo p = new QuejaReclamo();

                        p.VREC_COD_REC = Convert.ToString(dr[0]);
                        p.VREC_DESC_REC = Convert.ToString(dr[1]);
                        p.DREC_FECHA_REGISTRO = Convert.ToDateTime(dr[2]);
                        p.Nombre_Paciente = Convert.ToString(dr[3]);
                        p.IPAC_NRO_DOCUMENTO = Convert.ToString(dr[4]);
                        p.VPAC_HHCC = Convert.ToString(dr[5]);
                        p.Dirigido_A = Convert.ToString(dr[6]);
                        p.VSED_COD_SEDE = Convert.ToString(dr[7]);
                        p.VARE_COD_AREA = Convert.ToString(dr[8]);
                        p.VSER_COD_SERV = Convert.ToString(dr[9]);
                        p.VPRE_COD_PRE = Convert.ToString(dr[10]);
                        p.VNEG_COD_UNI_NEG = Convert.ToString(dr[11]);
                        p.VREC_APE_NOM_COLAB_INV = Convert.ToString(dr[12]);
                        p.VREC_APE_NOM_RECIB_POR = Convert.ToString(dr[13]);
                        p.VREC_NRO_LIBRO_RECL = Convert.ToString(dr[14]);
                        p.VQUE_COD_TIP_QUE = Convert.ToString(dr[15]);
                        p.IREC_PLAZO_CANTIDAD = Convert.ToInt32(dr[16]);
                        p.VREC_PLAZO_UNIDAD = Convert.ToString(dr[17]);
                        p.VREC_REQ_PAC = Convert.ToString(dr[18]);
                        p.VREC_INF_ADIC = Convert.ToString(dr[19]);
                        p.VREC_FECHA_EVENTO = Convert.ToDateTime(dr[20]);
                        p.Vpac_Apellidos = Convert.ToString(dr[21]);
                        p.Vpac_Nombres = Convert.ToString(dr[22]);
                        p.Vpac_Direccion = Convert.ToString(dr[23]);
                        p.Ipac_Edad = Convert.ToString(dr[24]);
                        p.Vpac_Email = Convert.ToString(dr[25]);
                        p.Vdoc_Cod_Tip_Doc = Convert.ToString(dr[26]);
                        p.Ipac_Nro_Documento = Convert.ToString(dr[27]);
                        p.Vpac_Celular = Convert.ToString(dr[28]);
                        p.Vpac_Telef_Fijo = Convert.ToString(dr[29]);
                        p.Vpac_Cod_Tipo_Paciente = Convert.ToString(dr[30]);
                        p.Vseg_Cod_Cia_Seg = Convert.ToString(dr[31]);
                        p.Vpac_Centro_Trabajo = Convert.ToString(dr[32]);
                        p.Vpac_Sexo = Convert.ToString(dr[33]);
                        p.Vtips_Cod_Tipo_Seguro = Convert.ToString(dr[34]);
                        p.Vpac_Cod_Iafa = Convert.ToString(dr[35]);
                        p.Ipac_Nro_Hab_Hosp = Convert.ToString(dr[36]);
                        p.Vrec_Nombres_Recl = Convert.ToString(dr[37]);
                        p.Vrec_Apellidos_Recl = Convert.ToString(dr[38]);
                        p.Vdoc_Cod_Tip_Doc = Convert.ToString(dr[39]);
                        p.Irec_Nro_Documento = Convert.ToString(dr[40]);
                        p.Vrec_Celular = Convert.ToString(dr[41]);
                        p.Vrec_Telef_Fijo = Convert.ToString(dr[42]);
                        p.Vrec_Email = Convert.ToString(dr[43]);
                        p.Vpac_Cod_Rel_Pac = Convert.ToString(dr[44]);
                        p.Vrec_Pacienteoreprlegal = Convert.ToString(dr[45]);
                        p.VREC_USUARIO_CREACION = Convert.ToString(dr[46]);
                        p.DREC_FECHA_CREACION = (dr[47].ToString() != null && dr[47].ToString() != "") ? Convert.ToDateTime(dr[47]) : DateTime.Now;
                        p.VEST_CODESTADO = Convert.ToString(dr[50]);
                        p.vubi_cod_ubi = Convert.ToString(dr["vubi_cod_ubi"]);
                        if (!dr.IsDBNull(dr.GetOrdinal("DREC_FECHA_VENCIMIENTO")))
                        {
                            if (!string.IsNullOrEmpty(dr.GetDateTime(dr.GetOrdinal("DREC_FECHA_VENCIMIENTO")).ToString()))
                            {
                                p.DREC_FECHA_VENCIMIENTO = dr.GetDateTime(dr.GetOrdinal("DREC_FECHA_VENCIMIENTO"));
                            }
                        }


                        //Edy
                        if (!dr.IsDBNull(dr.GetOrdinal("DPAC_NACIMIENTO")))
                            p.DPAC_NACIMIENTO = Convert.ToDateTime(dr["DPAC_NACIMIENTO"]);


                        list.Add(p);
                    }
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return list;
        }
        public QuejaReclamo mostrarQuejaReclamo(string CodReclamo)
        {
            QuejaReclamo p = new QuejaReclamo();

            using (OracleCommand cmd = new OracleCommand("RECUPERARRECLAMO", objCn))
            {
                cmd.CommandType = CommandType.StoredProcedure;

                OracleParameter refParameter = new OracleParameter();
                refParameter.ParameterName = "RECORDSET";
                refParameter.OracleType = OracleType.Cursor;
                refParameter.Direction = ParameterDirection.Output;

                OracleParameter codQRParameter = new OracleParameter();
                codQRParameter.ParameterName = "R_Cod_Reclamo";
                codQRParameter.OracleType = OracleType.VarChar;
                codQRParameter.Size = 30;
                codQRParameter.Direction = ParameterDirection.Input;
                codQRParameter.Value = CodReclamo;

                cmd.Parameters.Add(refParameter);
                cmd.Parameters.Add(codQRParameter);

                try
                {
                    objCn.Open();

                    OracleDataReader dr = cmd.ExecuteReader();

                    while (dr.Read())
                    {
                        p.Vpac_Apellidos = Convert.ToString(dr[0]);
                        p.Ipac_Nro_Documento = Convert.ToString(dr[1]);
                        p.VPAC_HHCC = Convert.ToString(dr[2]);
                        p.Dirigido_A = Convert.ToString(dr[3]);
                        p.Vest_Codestado = Convert.ToString(dr[4]);
                    }
                }
                catch (Exception ex)
                {
                    objCn.Dispose();
                }
                finally
                {
                    objCn.Close();
                }
            }
            return p;
        }

        public List<SeguimientoqrRespuesta> mostrarQRRespuesta(string CodReclamoResp)
        {
            List<SeguimientoqrRespuesta> lstObject = new List<SeguimientoqrRespuesta>();
            try
            {
                OracleCommand cmd = new OracleCommand("RECUPERAQRRESPUESTA", objCn);
                objCn.Open();
                cmd.Connection = objCn;
                cmd.CommandTimeout = 60;
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new OracleParameter("RECORDSET", OracleType.Cursor, 100, ParameterDirection.Output, null, DataRowVersion.Current, false, null));
                cmd.Parameters.Add(new OracleParameter("R_Cod_Reclamo", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, CodReclamoResp));

                using (IDataReader oRead = cmd.ExecuteReader(CommandBehavior.SingleResult))
                {
                    if (oRead != null)
                    {
                        while (oRead.Read())
                        {
                            SeguimientoqrRespuesta oObj = new SeguimientoqrRespuesta();

                            if (!oRead.IsDBNull(oRead.GetOrdinal("ISQR_ID_RESPUESTA")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetInt32(oRead.GetOrdinal("ISQR_ID_RESPUESTA")).ToString()))
                                {
                                    oObj.ISQR_ID_RESPUESTA = oRead.GetInt32(oRead.GetOrdinal("ISQR_ID_RESPUESTA"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("Vest_Nombreestado")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("Vest_Nombreestado")).ToString()))
                                {
                                    oObj.Vest_Nombreestado = oRead.GetString(oRead.GetOrdinal("Vest_Nombreestado"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("Responsable")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("Responsable")).ToString()))
                                {
                                    oObj.Responsable = oRead.GetString(oRead.GetOrdinal("Responsable"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("DSQR_FECHA_RESPUESTA")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetDateTime(oRead.GetOrdinal("DSQR_FECHA_RESPUESTA")).ToString()))
                                {
                                    oObj.DSQR_FECHA_RESPUESTA = oRead.GetDateTime(oRead.GetOrdinal("DSQR_FECHA_RESPUESTA"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("VSQR_DESC_ACCIONES")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("VSQR_DESC_ACCIONES")).ToString()))
                                {
                                    oObj.VSQR_DESC_ACCIONES = oRead.GetString(oRead.GetOrdinal("VSQR_DESC_ACCIONES"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("VSQR_DESC_RESULTADO")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("VSQR_DESC_RESULTADO")).ToString()))
                                {
                                    oObj.VSQR_DESC_RESULTADO = oRead.GetString(oRead.GetOrdinal("VSQR_DESC_RESULTADO"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("VGEN_COD_MOT_GEN")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("VGEN_COD_MOT_GEN")).ToString()))
                                {
                                    oObj.VGEN_COD_MOT_GEN = oRead.GetString(oRead.GetOrdinal("VGEN_COD_MOT_GEN"));
                                }
                            }

                            if (!oRead.IsDBNull(oRead.GetOrdinal("VESP_COD_MOT_ESP")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("VESP_COD_MOT_ESP")).ToString()))
                                {
                                    oObj.VESP_COD_MOT_ESP = oRead.GetString(oRead.GetOrdinal("VESP_COD_MOT_ESP"));
                                }
                            }

                            lstObject.Add(oObj);
                            oObj = null;
                        }
                    }
                }

            }
            catch (Exception ex)
            {
                objCn.Dispose();
            }
            finally
            {
                objCn.Close();
            }

            return lstObject;

        }


        public List<Empleado> EmpleadoBuscarDni(string pDNI)
        {
            List<Empleado> lstObject = new List<Empleado>();
            try
            {
                OracleCommand cmd = new OracleCommand("BUSCAREMPLEADODNI", objCn);
                objCn.Open();
                cmd.Connection = objCn;
                cmd.CommandTimeout = 60;
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add(new OracleParameter("RECORDSET", OracleType.Cursor, 100, ParameterDirection.Output, null, DataRowVersion.Current, false, null));
                cmd.Parameters.Add(new OracleParameter("R_Vemp_Nro_Documento", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, pDNI));
                using (IDataReader oRead = cmd.ExecuteReader(CommandBehavior.SingleResult))
                {
                    if (oRead != null)
                    {
                        while (oRead.Read())
                        {
                            Empleado oObj = new Empleado();

                            if (!oRead.IsDBNull(oRead.GetOrdinal("IEMP_ID_EMPLEADO")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetInt32(oRead.GetOrdinal("IEMP_ID_EMPLEADO")).ToString()))
                                {
                                    oObj.IEMP_ID_EMPLEADO = oRead.GetInt32(oRead.GetOrdinal("IEMP_ID_EMPLEADO"));
                                }
                            }
                            if (!oRead.IsDBNull(oRead.GetOrdinal("VEMP_APELLIDOS_EMP")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("VEMP_APELLIDOS_EMP")).ToString()))
                                {
                                    oObj.VEMP_APELLIDOS_EMP = oRead.GetString(oRead.GetOrdinal("VEMP_APELLIDOS_EMP"));
                                }
                            }
                            if (!oRead.IsDBNull(oRead.GetOrdinal("VEMP_NOMBRES_EMP")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("VEMP_NOMBRES_EMP")).ToString()))
                                {
                                    oObj.VEMP_NOMBRES_EMP = oRead.GetString(oRead.GetOrdinal("VEMP_NOMBRES_EMP"));
                                }
                            }
                            if (!oRead.IsDBNull(oRead.GetOrdinal("VEMP_NRO_DOCUMENTO")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("VEMP_NRO_DOCUMENTO")).ToString()))
                                {
                                    oObj.VEMP_NRO_DOCUMENTO = oRead.GetString(oRead.GetOrdinal("VEMP_NRO_DOCUMENTO"));
                                }
                            }
                            if (!oRead.IsDBNull(oRead.GetOrdinal("IEMP_TELEF_FIJO")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("IEMP_TELEF_FIJO")).ToString()))
                                {
                                    oObj.IEMP_TELEF_FIJO = oRead.GetString(oRead.GetOrdinal("IEMP_TELEF_FIJO"));
                                }
                            }
                            if (!oRead.IsDBNull(oRead.GetOrdinal("IEMP_CELULAR")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("IEMP_CELULAR")).ToString()))
                                {
                                    oObj.IEMP_CELULAR = oRead.GetString(oRead.GetOrdinal("IEMP_CELULAR"));
                                }
                            }
                            if (!oRead.IsDBNull(oRead.GetOrdinal("VEMP_EMAIL")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("VEMP_EMAIL")).ToString()))
                                {
                                    oObj.VEMP_EMAIL = oRead.GetString(oRead.GetOrdinal("VEMP_EMAIL"));
                                }
                            }
                            if (!oRead.IsDBNull(oRead.GetOrdinal("VDOC_COD_TIP_DOC")))
                            {
                                if (!string.IsNullOrEmpty(oRead.GetString(oRead.GetOrdinal("VDOC_COD_TIP_DOC")).ToString()))
                                {
                                    oObj.VDOC_COD_TIP_DOC = oRead.GetString(oRead.GetOrdinal("VDOC_COD_TIP_DOC"));
                                }
                            }
                            lstObject.Add(oObj);
                            oObj = null;
                        }
                    }
                }

            }
            catch (Exception ex)
            {
                objCn.Dispose();
            }
            finally
            {
                objCn.Close();
            }

            return lstObject;

        }





        #endregion

        #region "Insert,Upadate"

        public string insertQuejaReclamo(QuejaReclamo objqyr, Archivo objarchivo, Pacientes objPaciente)
        {
            string resultado = "";
            try
            {

                OracleCommand cmd = new OracleCommand("INSERTQUEJARECLAMO", objCn);
                objCn.Open();
                cmd.Connection = objCn;
                cmd.CommandTimeout = 60;
                cmd.CommandType = CommandType.StoredProcedure;
                OracleParameter OREC_COD_REC = new OracleParameter("Orec_Cod_Rec", OracleType.VarChar);
                OREC_COD_REC.Size = 30;
                OREC_COD_REC.Direction = ParameterDirection.Output;
                cmd.Parameters.Add(OREC_COD_REC);
                /* Datos Generales */
                cmd.Parameters.Add(new OracleParameter("Rpac_Hhcc", OracleType.NVarChar, 50, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.VPAC_HHCC));
                /* Datos del Reclamo */
                cmd.Parameters.Add(new OracleParameter("Rrec_Desc_Rec", OracleType.NVarChar, 4000, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.VREC_DESC_REC));
                cmd.Parameters.Add(new OracleParameter("Rrec_Req_Pac", OracleType.NVarChar, 4000, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.VREC_REQ_PAC));
                cmd.Parameters.Add(new OracleParameter("Rrec_Inf_Adic", OracleType.NVarChar, 4000, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.VREC_INF_ADIC));
                cmd.Parameters.Add(new OracleParameter("Rrec_Ape_Nom_Colab_Inv", OracleType.NVarChar, 500, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.VREC_APE_NOM_COLAB_INV));
                cmd.Parameters.Add(new OracleParameter("Rrec_Ape_Nom_Recib_Por", OracleType.NVarChar, 500, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.VREC_APE_NOM_RECIB_POR));
                cmd.Parameters.Add(new OracleParameter("Rsed_Cod_Sede", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.VSED_COD_SEDE));
                cmd.Parameters.Add(new OracleParameter("Rneg_Cod_Uni_Neg", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.VNEG_COD_UNI_NEG));
                cmd.Parameters.Add(new OracleParameter("Rare_Cod_Area", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.VARE_COD_AREA));
                cmd.Parameters.Add(new OracleParameter("Rser_Cod_Serv", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.VSER_COD_SERV));
                cmd.Parameters.Add(new OracleParameter("Rpre_Cod_Pre", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.VPRE_COD_PRE));
                cmd.Parameters.Add(new OracleParameter("Rque_Cod_Tip_Que", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.VQUE_COD_TIP_QUE));
                cmd.Parameters.Add(new OracleParameter("Rrec_Fecha_Registro", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.DREC_FECHA_REGISTRO));
                cmd.Parameters.Add(new OracleParameter("Rrec_Nro_Documento", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.IREC_NRO_DOCUMENTO));
                cmd.Parameters.Add(new OracleParameter("Rrec_Nro_Libro_Recl", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.VREC_NRO_LIBRO_RECL));
                cmd.Parameters.Add(new OracleParameter("Rrec_Fecha_Evento", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.VREC_FECHA_EVENTO));
                cmd.Parameters.Add(new OracleParameter("Rrec_Usuario_Creacion", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.VREC_USUARIO_CREACION));
                cmd.Parameters.Add(new OracleParameter("Rrec_Fecha_Creacion", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.DREC_FECHA_CREACION));
                cmd.Parameters.Add(new OracleParameter("Rrec_Fecha_Vencimiento", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objqyr.DREC_FECHA_VENCIMIENTO));
                ///* Datos de Archivo*/
                cmd.Parameters.Add(new OracleParameter("Rarc_Nom_Archivo", OracleType.NVarChar, 200, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objarchivo.VARC_NOM_ARCHIVO));
                cmd.Parameters.Add(new OracleParameter("Rarc_Ruta_Archivo", OracleType.NVarChar, 200, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objarchivo.VARC_RUTA_ARCHIVO));
                /* Datos del Cliente */
                cmd.Parameters.Add(new OracleParameter("Rpac_Apellidos", OracleType.NVarChar, 50, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VPAC_APELLIDOS));
                cmd.Parameters.Add(new OracleParameter("Rpac_Nombres", OracleType.NVarChar, 50, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VPAC_NOMBRES));
                cmd.Parameters.Add(new OracleParameter("Rpac_Nro_Documento", OracleType.NVarChar, 20, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.IPAC_NRO_DOCUMENTO));
                cmd.Parameters.Add(new OracleParameter("Rpac_Telef_Fijo", OracleType.NVarChar, 50, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VPAC_TELEF_FIJO));
                cmd.Parameters.Add(new OracleParameter("Rpac_Celular", OracleType.NVarChar, 50, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VPAC_CELULAR));
                cmd.Parameters.Add(new OracleParameter("Rpac_Email", OracleType.NVarChar, 100, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VPAC_EMAIL));
                cmd.Parameters.Add(new OracleParameter("Rpac_Direccion", OracleType.NVarChar, 500, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VPAC_DIRECCION));
                cmd.Parameters.Add(new OracleParameter("Rpac_Nacimiento", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.DPAC_NACIMIENTO));
                cmd.Parameters.Add(new OracleParameter("Rpac_Centro_Trabajo", OracleType.NVarChar, 500, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VPAC_CENTRO_TRABAJO));
                cmd.Parameters.Add(new OracleParameter("Rpac_Fec_Ing_Hosp", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.DPAC_FEC_ING_HOSP));
                cmd.Parameters.Add(new OracleParameter("Rpac_Nro_Hab_Hosp", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.IPAC_NRO_HAB_HOSP));
                cmd.Parameters.Add(new OracleParameter("Rpac_Cod_Tipo_Paciente", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VPAC_COD_TIPO_PACIENTE));
                cmd.Parameters.Add(new OracleParameter("Rdoc_Cod_Tip_Doc", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VDOC_COD_TIP_DOC));
                cmd.Parameters.Add(new OracleParameter("Rubi_Cod_Ubi", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VUBI_COD_UBI));
                cmd.Parameters.Add(new OracleParameter("Rseg_Cod_Cia_Seg", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VSEG_COD_CIA_SEG));
                cmd.Parameters.Add(new OracleParameter("Rpac_Sexo", OracleType.NVarChar, 2, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VPAC_SEXO));
                cmd.Parameters.Add(new OracleParameter("Rtips_Cod_Tipo_Seguro", OracleType.NVarChar, 20, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VTIPS_COD_TIPO_SEGURO));
                cmd.Parameters.Add(new OracleParameter("Rpac_Cod_Iafa", OracleType.NVarChar, 20, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VPAC_COD_IAFA));
                cmd.ExecuteNonQuery();
                resultado = OREC_COD_REC.Value.ToString();


            }
            catch (Exception ex)
            {
                objCn.Dispose();
                throw ex;
            }
            finally
            {
                if (objCn != null)
                {
                    objCn.Close();
                }
            }
            return resultado;
        }

        public int UpdateQuejaReclamo(QuejaReclamo objQR, Pacientes objPaciente, Reclamante objReclamante)
        {
            int resultado = 0;
            try
            {
                OracleCommand cmd = new OracleCommand("Update_Quejareclamo", objCn);
                objCn.Open();
                cmd.Connection = objCn;
                cmd.CommandTimeout = 60;
                cmd.CommandType = CommandType.StoredProcedure;

                // Datos Qy R
                cmd.Parameters.Add(new OracleParameter("Rrec_Cod_Rec", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objQR.VREC_COD_REC));
                cmd.Parameters.Add(new OracleParameter("Rrec_Desc_Rec", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objQR.VREC_DESC_REC));
                cmd.Parameters.Add(new OracleParameter("Rrec_Req_Pac", OracleType.NVarChar, 4000, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objQR.VREC_REQ_PAC));
                cmd.Parameters.Add(new OracleParameter("Rrec_Inf_Adic", OracleType.NVarChar, 4000, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objQR.VREC_INF_ADIC));
                cmd.Parameters.Add(new OracleParameter("Rque_Cod_Tip_Que", OracleType.NVarChar, 4000, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objQR.VQUE_COD_TIP_QUE));
                cmd.Parameters.Add(new OracleParameter("Rrec_Ape_Nom_Recib_Por", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objQR.VREC_APE_NOM_RECIB_POR));
                cmd.Parameters.Add(new OracleParameter("Rrec_Ape_Nom_Colab_Inv", OracleType.NVarChar, 500, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objQR.VREC_APE_NOM_COLAB_INV));
                cmd.Parameters.Add(new OracleParameter("Rsed_Cod_Sede", OracleType.NVarChar, 500, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objQR.VSED_COD_SEDE));
                cmd.Parameters.Add(new OracleParameter("Rneg_Cod_Uni_Neg", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objQR.VNEG_COD_UNI_NEG));
                cmd.Parameters.Add(new OracleParameter("Rare_Cod_Area", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objQR.VARE_COD_AREA));
                cmd.Parameters.Add(new OracleParameter("Rser_Cod_Serv", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objQR.VSER_COD_SERV));
                cmd.Parameters.Add(new OracleParameter("Rpre_Cod_Pre", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objQR.VPRE_COD_PRE));
                //cmd.Parameters.Add(new OracleParameter("Rrec_Fecha_Registro", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objQR.DREC_FECHA_REGISTRO));
                cmd.Parameters.Add(new OracleParameter("Rrec_Nro_Libro_Recl", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objQR.VREC_NRO_LIBRO_RECL));
                cmd.Parameters.Add(new OracleParameter("Rqyr_Hhcc", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objQR.VPAC_HHCC));
                cmd.Parameters.Add(new OracleParameter("Rqyr_Nro_Documento", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objQR.IREC_NRO_DOCUMENTO));
                cmd.Parameters.Add(new OracleParameter("Rrec_Fecha_Evento", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objQR.DREC_FECHA_ACTUALIZACION));
                cmd.Parameters.Add(new OracleParameter("RUsuario_Actualizacion", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objQR.DREC_FECHA_ACTUALIZACION));
                cmd.Parameters.Add(new OracleParameter("RFecha_Actualizacion", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objQR.DREC_FECHA_ACTUALIZACION));
                cmd.Parameters.Add(new OracleParameter("Rrec_Fecha_Vencimiento", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objQR.DREC_FECHA_VENCIMIENTO));


                //    Datos del Paciente                
                cmd.Parameters.Add(new OracleParameter("Rpac_Apellidos", OracleType.NVarChar, 50, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VPAC_APELLIDOS));
                cmd.Parameters.Add(new OracleParameter("Rpac_Nombres", OracleType.NVarChar, 50, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VPAC_NOMBRES));
                cmd.Parameters.Add(new OracleParameter("Rpac_Nro_Documento", OracleType.NVarChar, 20, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.IPAC_NRO_DOCUMENTO));
                cmd.Parameters.Add(new OracleParameter("Rpac_Telef_Fijo", OracleType.NVarChar, 50, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VPAC_TELEF_FIJO));
                cmd.Parameters.Add(new OracleParameter("Rpac_Celular", OracleType.NVarChar, 50, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VPAC_CELULAR));
                cmd.Parameters.Add(new OracleParameter("Rpac_Email", OracleType.NVarChar, 100, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VPAC_EMAIL));
                cmd.Parameters.Add(new OracleParameter("Rpac_Direccion", OracleType.NVarChar, 500, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VPAC_DIRECCION));
                cmd.Parameters.Add(new OracleParameter("Rpac_Nacimiento", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.DPAC_NACIMIENTO));
                cmd.Parameters.Add(new OracleParameter("Rpac_Centro_Trabajo", OracleType.NVarChar, 500, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VPAC_CENTRO_TRABAJO));
                cmd.Parameters.Add(new OracleParameter("Rpac_Nro_Hab_Hosp", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.IPAC_NRO_HAB_HOSP));
                cmd.Parameters.Add(new OracleParameter("Rpac_Cod_Tipo_Paciente", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VPAC_COD_TIPO_PACIENTE));
                cmd.Parameters.Add(new OracleParameter("Rubi_Cod_Ubi", OracleType.NVarChar, 12, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VUBI_COD_UBI));
                cmd.Parameters.Add(new OracleParameter("Rseg_Cod_Cia_Seg", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VSEG_COD_CIA_SEG));
                cmd.Parameters.Add(new OracleParameter("Rpac_Sexo", OracleType.NVarChar, 2, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VPAC_SEXO));
                cmd.Parameters.Add(new OracleParameter("Rtips_Cod_Tipo_Seguro", OracleType.NVarChar, 20, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VTIPS_COD_TIPO_SEGURO));
                cmd.Parameters.Add(new OracleParameter("Rpac_Cod_Iafa", OracleType.NVarChar, 20, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objPaciente.VPAC_COD_IAFA));
                /* Datos del Reclamante */
                cmd.Parameters.Add(new OracleParameter("Rret_Apellidos_Recl", OracleType.NVarChar, 200, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objReclamante.VREC_APELLIDOS_RECL));
                cmd.Parameters.Add(new OracleParameter("Rret_Nombres_Recl", OracleType.NVarChar, 200, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objReclamante.VREC_NOMBRES_RECL));
                cmd.Parameters.Add(new OracleParameter("Rret_Nro_Documento", OracleType.NVarChar, 20, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objReclamante.IREC_NRO_DOCUMENTO));
                cmd.Parameters.Add(new OracleParameter("Rret_Telef_Fijo", OracleType.NVarChar, 50, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objReclamante.VREC_TELEF_FIJO));
                cmd.Parameters.Add(new OracleParameter("Rret_Celular", OracleType.NVarChar, 50, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objReclamante.VREC_CELULAR));
                cmd.Parameters.Add(new OracleParameter("Rret_Email", OracleType.NVarChar, 200, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objReclamante.VREC_EMAIL));
                cmd.Parameters.Add(new OracleParameter("Rret_Pacienteoreprlegal", OracleType.NVarChar, 10, ParameterDirection.Input, false, 10, 0, null, DataRowVersion.Current, objReclamante.VREC_PACIENTEOREPRLEGAL));

                resultado = cmd.ExecuteNonQuery();
            }
            catch (Exception ex)
            {
                objCn.Dispose();
            }
            finally
            {
                if (objCn != null)
                {
                    objCn.Close();
                }
            }
            return resultado;
        }


        #endregion

        #endregion


    }
}
